package br.edu.unifei.mestrado.mn.util;


public class Frontier {
//
//	private boolean info = false;
//	private boolean debug = false;
//
//	private Map<Long, NodeWrapper> map = new HashMap<Long, NodeWrapper>();
//
//	public Frontier(boolean info, boolean debug) {
//		this.info = info;
//		this.debug = debug;
//	}
//
//	public void remove(NodeWrapper vertice) {
//		map.remove(vertice.getId());
//	}
//
//	public Collection<NodeWrapper> getVertices() {
//		return map.values();
//	}
//
//	private void put(long idVertice, NodeWrapper other) {
//		map.put(idVertice, other);
//	}
//
//	private boolean containsKey(long idVertice) {
//		return map.containsKey(idVertice);
//	}
//
//	/**
//	 * Inclui os nós visinhos a baseNode que ainda não estão em nenhuma partição. <br>
//	 * E inclui os vizinhos de I e J na partição de I e J respectivamente <br>
//	 * 
//	 * Usado somente pelo BKL.
//	 * 
//	 * @param baseNode
//	 * @param basePartition 
//	 * @return
//	 */
//	public List<NodeWrapper> includeNodesToFrontier(NodeWrapper baseNode, Partition basePartition) {
//		List<NodeWrapper> justIncluded = new ArrayList<NodeWrapper>();
//		// UTIL: inclui os vértices adjacentes a baseNode, pq eles se tornaram fronteira
//		for (RelationshipWrapper aresta : baseNode.getRelationships()) {
//			NodeWrapper other = aresta.getOtherNode(baseNode);
//			if (!other.isLocked()) { // se a outra ponta nao foi usada
//				long idVertice = other.getId();
//				if (!this.containsKey(idVertice)) {
//					this.put(idVertice, other);
//					justIncluded.add(other);
//					
//					//TODO: Deletar essa classe: Frontier
//					//UTIL: já adiciona o vertice na partição correta.
////					basePartition.includeToPartition(other, baseNode.getPartition(), aresta);
//				}
//			}
//		}
//		if (info) {
//			logger.warn("Novos vertices na fronteira (" + justIncluded.size() + "): ");
//			if (debug) {
//				for (NodeWrapper node : justIncluded) {
//					logger.warn(node.getId() + ", ");
//				}
//			}
//			logger.warn();
//		}
//		return justIncluded;
//	}
//
//	public void includeInitialFrontier(Iterable<NodeWrapper> nodes) {
//		for (NodeWrapper node : nodes) {
//			map.put(node.getId(), node);
//		}
//	}
//	
//	public void printFrontier() {
//		if (info) {
//			logger.warn(toString());
//		}
//	}
//
//	@Override
//	public String toString() {
//		StringBuffer tx = new StringBuffer("Frontier (" + map.size() + "): ");
//		if (debug) {
//			int i = 0;
//			for (Long id : map.keySet()) {
//				tx.append(id).append(",");
//				i++;
//				if (i == 20) {
//					break;
//				}
//			}
//		}
//		return tx.toString();
//	}
}
